package com.virtualightning.mvvm.utils

import android.widget.Toast
import com.virtualightning.mvvm.Initializer

typealias ToastBuilder = (Toast, String) -> Unit

/**
 *  Anchor : Create by CimZzz
 *  Time : 2021/01/27 23:24:08
 *  Project : zxs-new
 *  吐司工具类
 */
object ToastUtils {
    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/1/27 11:26 PM
    // 吐司构造器
    ///////////////////////////////////////////////////////////////////////////
    var toastBuilder : ToastBuilder? = null

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/1/27 11:26 PM
    // 上一次吐司对象
    ///////////////////////////////////////////////////////////////////////////
    private var toast: Toast? = null

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/10/11 11:00 AM
    // 显示资源字符串的吐司
    ///////////////////////////////////////////////////////////////////////////
    fun showResourceToast(resId: Int, builder: ToastBuilder? = null) {
        showToast(Initializer.application.getString(resId), builder)
    }

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/1/27 11:29 PM
    // 显示吐司
    ///////////////////////////////////////////////////////////////////////////
    fun showToast(any: Any?, builder: ToastBuilder? = null) {
        toast?.cancel()
        val useBuilder = builder ?: toastBuilder
        if(useBuilder == null) {
            toast = Toast.makeText(Initializer.application, any.toString(), Toast.LENGTH_SHORT)
            toast?.show()
        } else {
            val initToast = Toast(Initializer.application)
            useBuilder(initToast, any.toString())

            toast = initToast
            toast?.show()
        }
    }
}